//缓存工具（模板）
const CacheUtil = {
  /**
   * 设置缓存的方法
   * @param {string} key  要存入缓存的key
   * @param {any} value 要存入缓存的值
   * @param {number} expireSeconds 设置的过期时间（秒）
   */
  //设置缓存
  set(key, value, expireSeconds) {
    try {
      //过期时间 = 当前时间 + 设置的过期时间(时间可以做加法：毫秒数相加)
      const expire = Date.now() + expireSeconds * 1000;
      //构建要缓存的数据 = 过期时间 和 真正要缓存的页面数据
      const data = {
        expire, //过期时间
        value //真正需要缓存的页面数据
      }
      //存入缓存中
      wx.setStorageSync(key, data)
    } catch (error) {
      console.error("设置缓存异常：", error);
    } 
  },

  /**
   * 
   * @param {*} key 
   */
  //获取缓存（自动清空缓存）
  get(key) {
    try {
      const cachedData = wx.getStorageSync(key);
      //如果缓存不存在
      if (!cachedData) return null;
      //如果缓存过期
      if (Date.now() > cachedData.expire) {
        //移除过期缓存
        wx.removeStorageSync(key);
        return null;
      }
      //缓存正常  返回缓存的页面数据
      return cachedData.value;
    } catch (error) {
      console.error("获取缓存异常：", error);
    }

  },

  //清除过期缓存
  clearExpired() {
    try {
      //清空所有缓存  wx.clearStorage();
      //获取到全部缓存中的key,  是一个数组
      const keys = wx.getStorageInfoSync().keys;
      keys.forEach(key => { //遍历数组的每一个key,用每一个key调用get方法
        this.get(key) //调用get方法清除过期缓存
      })
    } catch (error) {
      console.error("清除缓存异常：", error);
    }
  }
}

// 导出模块
module.exports = {
  CacheUtil
}